#ifndef FILECONTENTBUFFERED_H
#define FILECONTENTBUFFERED_H

#include "FileContentBase.h"
#include <vector>
#include <list>


class FileContentBuffered: public FileContentBase {
  public:


    FileContentBuffered();


    ~FileContentBuffered();


    bool ReadFile( const wxString& fileName );


    bool WriteFile( const wxString& fileName );


    OffsetT GetSize();


    OffsetT Read( void* buff, OffsetT position, OffsetT length );

  protected:


    virtual ModificationData* BuildChangeModification( OffsetT position, OffsetT length, const void* data = 0 );


    virtual ModificationData* BuildAddModification( OffsetT position, OffsetT length, const void* data = 0 );


    virtual ModificationData* BuildRemoveModification( OffsetT position, OffsetT length );

  private:


    class IntModificationData;

    std::vector< char > m_Buffer;
};

#endif
